// 配置管理器
// 自动处理配置文件的加载，支持开发和生产环境

const ConfigManager = {
  
  /**
   * 获取API配置
   * 优先级：api-config.local.js > api-config.js
   */
  getApiConfig() {
    let config = null;
    let configSource = '';
    
    try {
      // 首先尝试加载本地配置文件
      config = require('./api-config.local.js');
      configSource = 'api-config.local.js';
      console.log('✅ 已加载本地配置 api-config.local.js');
    } catch (error) {
      try {
        // 如果本地配置不存在，加载默认配置
        config = require('./api-config.js');
        configSource = 'api-config.js';
        console.log('📋 已加载默认配置 api-config.js');
        
        // 在开发工具中显示提示
        if (wx.getSystemInfoSync().platform === 'devtools') {
          this.showConfigTip();
        }
      } catch (defaultError) {
        console.error('❌ 配置文件加载失败:', defaultError);
        throw new Error('无法加载配置文件，请检查 config 目录');
      }
    }
    
    // 验证必要的配置项
    this.validateConfig(config, configSource);
    
    return config;
  },

  /**
   * 验证配置文件的必要字段
   */
  validateConfig(config, configSource = '') {
    const requiredFields = [
      'server.baseUrl',
      'auth.corpCode',
      'auth.storageKeys.accessToken'
    ];

    for (const field of requiredFields) {
      const value = this.getNestedValue(config, field);
      if (!value || value.includes('your-') || value.includes('example')) {
        if (configSource === 'api-config.js') {
          console.warn(`⚠️  配置项 ${field} 是示例值，建议创建 api-config.local.js 文件并配置真实参数`);
        } else {
          console.warn(`⚠️  配置项 ${field} 似乎还是示例值，请检查配置`);
        }
      }
    }
  },

  /**
   * 获取嵌套对象的值
   */
  getNestedValue(obj, path) {
    return path.split('.').reduce((current, key) => current?.[key], obj);
  },

  /**
   * 显示配置提示
   */
  showConfigTip() {
    // 延迟显示，避免影响启动
    setTimeout(() => {
      wx.showModal({
        title: '配置提示',
        content: '当前使用默认配置文件。\n\n如需自定义配置，请复制 api-config.js 为 api-config.local.js 并修改您的配置参数。',
        showCancel: false,
        confirmText: '我知道了'
      });
    }, 2000);
  },

  /**
   * 检查是否为开发环境
   */
  isDevelopment() {
    return wx.getSystemInfoSync().platform === 'devtools';
  },

  /**
   * 获取环境特定的配置
   */
  getEnvironmentConfig() {
    const baseConfig = this.getApiConfig();
    
    if (this.isDevelopment()) {
      // 开发环境的特殊处理
      console.log('🔧 当前为开发环境');
    }
    
    return baseConfig;
  }
};

module.exports = ConfigManager; 